/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/10/14 16:15
 * @Copyright
 */
package Reflect;
import java.lang.reflect.Constructor;
/*
了解，通过反射机制调用构造方法实例化Java对象
 */
public class ReflectTest12 {
    public static void main(String[] args) throws Exception{
        //不适用反射机制怎么创建
        Vip v1=new Vip();
        Vip v2=new Vip(110,"张三","2001-10-11",true);
        //使用反射机制怎么创建对象
        Class c=Class.forName("demo.Reflect.Vip");
        //调用无参构造方法
        Object obj=c.newInstance();
        System.out.println(obj);

        //调用有参构造方法
        //第一步：先获取到这个有参数的构造方法
        Constructor con = c.getDeclaredConstructor(int.class, String.class, String.class, boolean.class);
        //第二步：调用构造方法创建对象
        Object jack=con.newInstance(110,"jack","1990-1-=11",true);
        System.out.println(jack);

        //获取无参的构造方法
        Constructor con2 = c.getDeclaredConstructor();
        Object newObject2 = con2.newInstance();
        System.out.println(newObject2);
    }
}
